home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: Greatest Hits 1996 / Amiga Games: Greatest Hits 1996.iso / spiele / publicdomain / ls-tron3.1 / extra.i < prev    next >
Text File  |  1996-04-19  |  19KB  |  542 lines

  1. { Extra.i }
  2.  
  3. {$I "Control.i" }
  4.  
  5. PROCEDURE SetColours(all : BOOLEAN);   { Farben für Requester ändern }
  6.  
  7.   BEGIN
  8.     SetRGB4(ADDRESS(MyScreen^.SViewPort),2,$0,$0,$0);
  9.     IF all THEN SetRGB4(ADDRESS(MyScreen^.SViewPort),3,$0,$0,$F);
  10.   END;
  11.  
  12. PROCEDURE ResetColours(all : BOOLEAN); { Farben zurücksetzen     }
  13.  
  14.   BEGIN
  15.     WITH NormColours[2] DO
  16.       SetRGB4(ADDRESS(MyScreen^.SViewPort),2,r,g,b);
  17.     IF all THEN
  18.        WITH NormColours[3] DO
  19.          SetRGB4(ADDRESS(MyScreen^.SViewPort),3,r,g,b);
  20.   END;
  21.  
  22. PROCEDURE Extra;
  23.  
  24.   VAR sWindow   : WindowPtr;
  25.       sRastPort : RastPortPtr;
  26.  
  27.   CONST ExInt1 : IntuiText = (1,0,0,35,1,NIL,"Namen"       ,NIL);
  28.         ExInt2 : IntuiText = (1,0,0,23,1,NIL,"Steuerung"   ,NIL);
  29.         ExInt3 : IntuiText = (1,0,0,23,1,NIL,"Lade Maze"   ,NIL);
  30.         ExInt4 : IntuiText = (1,0,0,17,1,NIL,"Maze an/aus" ,NIL);
  31.         ExInt5 : IntuiText = (1,0,0,14,1,NIL,"Sound an/aus",NIL);
  32.         ExInt6 : IntuiText = (1,0,0,23,1,NIL,"Speichern"   ,NIL);
  33.         ExInt7 : IntuiText = (8,0,0,37,1,NIL,"Ende"        ,NIL);
  34.  
  35.         EInt1  : IntuiText = (1,0,0,35,1,NIL,"Names"       ,NIL);
  36.         EInt2  : IntuiText = (1,0,0,26,1,NIL,"Steering"    ,NIL);
  37.         EInt3  : IntuiText = (1,0,0,23,1,NIL,"Load Maze"   ,NIL);
  38.         EInt4  : IntuiText = (1,0,0,17,1,NIL,"Maze on/off" ,NIL);
  39.         EInt5  : IntuiText = (1,0,0,14,1,NIL,"Sound on/off",NIL);
  40.         EInt6  : IntuiText = (1,0,0,14,1,NIL,"Save options",NIL);
  41.         EInt7  : IntuiText = (8,0,0,37,1,NIL,"Quit"        ,NIL);
  42.  
  43.         EGad7  : Gadget = (NIL,250,200,101,11,GadghImage,RelVerify,
  44.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,7,NIL);
  45.         EGad6  : Gadget = (NIL,250,175,101,11,GadghImage,RelVerify,
  46.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,6,NIL);
  47.         EGad5  : Gadget = (NIL,250,150,101,11,GadghImage+Selected,
  48.                            RelVerify+Toggleselect,
  49.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,5,NIL);
  50.         EGad4  : Gadget = (NIL,250,125,101,11,GadghImage+Selected,
  51.                            RelVerify+Toggleselect,
  52.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,4,NIL);
  53.         EGad3  : Gadget = (NIL,250,100,101,11,GadghImage,RelVerify,
  54.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,3,NIL);
  55.         EGad2  : Gadget = (NIL,250, 75,101,11,GadghImage,RelVerify,
  56.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,2,NIL);
  57.         EGad1  : Gadget = (NIL,250, 50,101,11,GadghImage,RelVerify,
  58.                            BOOLGADGET,NIL,NIL,NIL,0,NIL,1,NIL);
  59.  
  60.   PROCEDURE Edit_Names; { Namen eingeben }
  61.  
  62.     { Es werden 6 Stringgadgets benötigt... }
  63.  
  64.     CONST MyGad1     : Gadget    = (NIL,306, 60,116,11,GadghNONE,
  65.                                     RelVerify+GadGimmediate,StrGADGET,
  66.                                     NIL,NIL,NIL,0,NIL,1,NIL);
  67.           MyGad2     : Gadget    = (NIL,306, 80,116,11,GadghNONE,
  68.                                     RelVerify+GadGimmediate,StrGADGET,
  69.                                     NIL,NIL,NIL,0,NIL,2,NIL);
  70.           MyGad3     : Gadget    = (NIL,306,100,116,11,GadghNONE,
  71.                                     RelVerify+GadGimmediate,StrGADGET,
  72.                                     NIL,NIL,NIL,0,NIL,3,NIL);
  73.           MyGad4     : Gadget    = (NIL,306,120,116,11,GadghNone,
  74.                                     RelVerify+GadGimmediate,StrGADGET,
  75.                                     NIL,NIL,NIL,0,NIL,4,NIL);
  76.           MyGad5     : Gadget    = (NIL,306,140,116,11,GadghNone,
  77.                                     RelVerify+GadGimmediate,StrGADGET,
  78.                                     NIL,NIL,NIL,0,NIL,5,NIL);
  79.           MyGad6     : Gadget    = (NIL,306,160,116,11,GadghNone,
  80.                                     RelVerify+GadGimmediate,StrGADGET,
  81.                                     NIL,NIL,NIL,0,NIL,6,NIL);
  82.           OkGad      : Gadget    = (NIL,267,200,101,11,GadghImage,
  83.                                     RelVerify,BOOLGADGET,NIL,NIL,NIL,
  84.                                     0,NIL,10,NIL);
  85.  
  86.           MyInt1    : IntuiText = (2,0,0,-72,1,NIL,"Spieler 1:",NIL);
  87.           MyInt2    : IntuiText = (3,0,0,-72,1,NIL,"Spieler 2:",NIL);
  88.           MyInt3    : IntuiText = (4,0,0,-72,1,NIL,"Spieler 3:",NIL);
  89.           MyInt4    : IntuiText = (5,0,0,-72,1,NIL,"Spieler 4:",NIL);
  90.           MyInt5    : IntuiText = (6,0,0,-72,1,NIL,"Spieler 5:",NIL);
  91.           MyInt6    : IntuiText = (7,0,0,-72,1,NIL,"Spieler 6:",NIL);
  92.  
  93.           MyEInt1   : IntuiText = (2,0,0,-66,1,NIL, "Player 1:",NIL);
  94.           MyEInt2   : IntuiText = (3,0,0,-66,1,NIL, "Player 2:",NIL);
  95.           MyEInt3   : IntuiText = (4,0,0,-66,1,NIL, "Player 3:",NIL);
  96.           MyEInt4   : IntuiText = (5,0,0,-66,1,NIL, "Player 4:",NIL);
  97.           MyEInt5   : IntuiText = (6,0,0,-66,1,NIL, "Player 5:",NIL);
  98.           MyEInt6   : IntuiText = (7,0,0,-66,1,NIL, "Player 6:",NIL);
  99.  
  100.           OkInt     : IntuiText = (8,0,0, 44,1,NIL,"Ok",NIL);
  101.  
  102.           StrInfo1  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  103.           StrInfo2  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  104.           StrInfo3  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  105.           StrInfo4  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  106.           StrInfo5  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  107.           StrInfo6  : StringInfo = (NIL,NIL,0,19,1,1,0,0,0,0,NIL,0,NIL);
  108.  
  109.           sNewWindow : NewWindow = (0,10,640,246,0,0,GadgetDown_f+Rawkey_F+
  110.                                     GadgetUp_f,SMART_Refresh+ACTIVATE+
  111.                                     RMBTrap+Borderless,NIL,NIL,NIL,NIL,
  112.                                     NIL,640,246,640,246,CUSTOMSCREEN_F);
  113.  
  114.     VAR sWindow : WindowPtr;
  115.         IntMsg  : IntuiMessagePtr;
  116.         sRP     : RastPortPtr;
  117.         Code    : INTEGER;
  118.         Dongle  : BOOLEAN;
  119.  
  120.     BEGIN
  121.       StrInfo1.Buffer:=TBase^.players[1].name;  { Alles einstellen  }
  122.       StrInfo2.Buffer:=TBase^.players[2].name;
  123.       StrInfo3.Buffer:=TBase^.players[3].name;
  124.       StrInfo4.Buffer:=TBase^.players[4].name;
  125.       StrInfo5.Buffer:=TBase^.players[5].name;
  126.       StrInfo6.Buffer:=TBase^.players[6].name;
  127.  
  128.       SetGadget(ADR(OkGad),NIL,ADR(BorA1),ADR(BorB1),ADR(OkInt));
  129.  
  130.       IF Sprache=Deutsch THEN
  131.          BEGIN
  132.            MyGad1.GadgetText:=ADR(MyInt1);
  133.            MyGad2.GadgetText:=ADR(MyInt2);
  134.            MyGad3.GadgetText:=ADR(MyInt3);
  135.            MyGad4.GadgetText:=ADR(MyInt4);
  136.            MyGad5.GadgetText:=ADR(MyInt5);
  137.            MyGad6.GadgetText:=ADR(MyInt6);
  138.          END
  139.         ELSE
  140.          BEGIN
  141.            MyGad1.GadgetText:=ADR(MyEInt1);
  142.            MyGad2.GadgetText:=ADR(MyEInt2);
  143.            MyGad3.GadgetText:=ADR(MyEInt3);
  144.            MyGad4.GadgetText:=ADR(MyEInt4);
  145.            MyGad5.GadgetText:=ADR(MyEInt5);
  146.            MyGad6.GadgetText:=ADR(MyEInt6);
  147.          END;
  148.  
  149.       WITH MyGad6 DO
  150.         BEGIN
  151.           SpecialInfo:=ADR(StrInfo6);
  152.           NextGadget :=ADR(OkGad);
  153.         END;
  154.       WITH MyGad5 DO
  155.         BEGIN
  156.           SpecialInfo:=ADR(StrInfo5);
  157.           NextGadget :=ADR(MyGad6);
  158.         END;
  159.       WITH MyGad4 DO
  160.         BEGIN
  161.           SpecialInfo:=ADR(StrInfo4);
  162.           NextGadget :=ADR(MyGad5);
  163.         END;
  164.       WITH MyGad3 DO
  165.         BEGIN
  166.           SpecialInfo:=ADR(StrInfo3);
  167.           NextGadget :=ADR(MyGad4);
  168.         END;
  169.       WITH MyGad2 DO
  170.         BEGIN
  171.           NextGadget :=ADR(MyGad3);
  172.           SpecialInfo:=ADR(StrInfo2);
  173.         END;
  174.       WITH MyGad1 DO
  175.         BEGIN
  176.           NextGadget :=ADR(MyGad2);
  177.           SpecialInfo:=ADR(StrInfo1);
  178.         END;
  179.  
  180.       sNewWindow.screen     :=MyScreen;
  181.       sNewWindow.FirstGadget:=ADR(MyGad1);
  182.  
  183.       sWindow:=NIL;
  184.       sWindow:=OpenWindow(ADR(sNewWindow));  { Endlich das Fenster öffnen}
  185.       IF sWindow<>NIL THEN
  186.          BEGIN
  187.            ViewMouse(sWindow);
  188.  
  189.            sRP:=sWindow^.RPort;
  190.  
  191.            SetAPen(sRP,1);
  192.            Line(sRP,0,0,639,0);
  193.            DrawIBox(sRP,0,1,639,245);
  194.            DrawIBox(sRP,1,1,638,245);
  195.            Draw0Box(sRP,2,2,637,244);
  196.            Draw0Box(sRP,3,3,636,243);
  197.  
  198.            DrawBox(sRP,303, 58,421, 69);
  199.            DrawBox(sRP,303, 78,421, 89);
  200.            DrawBox(sRP,303, 98,421,109);
  201.            DrawBox(sRP,303,118,421,129);
  202.            DrawBox(sRP,303,138,421,149);
  203.            DrawBox(sRP,303,158,421,169);
  204.  
  205.            IntMsg:=NIL;
  206.            Code:=-1;
  207.  
  208.            Dongle:=ActivateGadget(ADR(MyGad1),SWindow,NIL);
  209.  
  210.            REPEAT  { Auf MSGs Warten und entsprechend reagieren }
  211.              IF IntMsg<>NIL THEN ReplyMsg(ADDRESS(IntMsg));
  212.              intMSG:=ADDRESS(WaitPort(sWindow^.UserPort));
  213.              intMsg:=ADDRESS(GetMSG  (sWindow^.UserPort));
  214.              IF (intMSG^.class=Gadgetup_F) OR (intMsg^.class=GadgetDown_F) THEN
  215.                 Code:=GetGadgetID(IntMSG^.IADDRESS);
  216.              IF IntMSG^.Class=RawKey_F THEN
  217.                 BEGIN
  218.                   Code:=IntMSG^.Code;
  219.                   IF (Code>=F1) AND (code<=F6) THEN Code:=Code-F1
  220.                      ELSE IF Code=F10 THEN BEGIN
  221.                                              code:=10;
  222.                                              SelectGadget(sRP,ADR(OkGad));
  223.                                            END
  224.                                       ELSE code:=$ff;
  225.                 END;
  226.              CASE Code OF
  227.                0   : Dongle:=ActivateGadget(ADR(MyGad1),SWindow,NIL);
  228.                1   : Dongle:=ActivateGadget(ADR(MyGad2),SWindow,NIL);
  229.                2   : Dongle:=ActivateGadget(ADR(MyGad3),SWindow,NIL);
  230.                3   : Dongle:=ActivateGadget(ADR(MyGad4),SWindow,NIL);
  231.                4   : Dongle:=ActivateGadget(ADR(MyGad5),SWindow,NIL);
  232.                5   : Dongle:=ActivateGadget(ADR(MyGad6),SWindow,NIL);
  233.               ELSE;
  234.              END;
  235.            UNTIL code=10;
  236.            ReplyMSG(ADDRESS(intMsg));
  237.  
  238.            ClearPointer(sWindow);
  239.  
  240.            MyCloseWindow(SWindow);
  241.          END;
  242.     END;
  243.  
  244.   {$I "Maze.i" }
  245.  
  246.   PROCEDURE Switch_Sound;
  247.  
  248.     BEGIN
  249.       IF MyModule<>NIL THEN
  250.          BEGIN
  251.            IF TBase^.Sound THEN BEGIN
  252.                                   StopPlayer;
  253.                                   TBase^.sound:=FALSE;
  254.                                 END
  255.                            ELSE BEGIN
  256.                                   PlayModule(MyModule);
  257.                                   TBase^.sound:=TRUE;
  258.                                 END;
  259.          END;
  260.     END;
  261.  
  262.   PROCEDURE Save_Config;
  263.  
  264.     VAR datei     : TEXT;
  265.         dateiname : STRING;
  266.         fehler,x  : INTEGER;
  267.  
  268.     BEGIN
  269.       dateiname:=ALLOCSTRING(255);
  270.  
  271.       Strcpy(Dateiname,TBase^.TronDir);
  272.       StrCat(dateiname,"LS-Tron.config");
  273.  
  274.       fehler:=0;
  275.  
  276.      {$I-}
  277.       Rewrite(Datei,Dateiname);
  278.       Fehler:=IOResult;
  279.  
  280.       WITH TBase^ DO
  281.         BEGIN
  282.           IF Fehler=0 THEN
  283.              BEGIN
  284.                WRITELN(datei,Sprache);
  285.                Fehler:=IOResult;
  286.              END;
  287.  
  288.           IF fehler=0 THEN
  289.              BEGIN
  290.                WRITELN(datei,max_length);
  291.                Fehler:=IOResult;
  292.              END;
  293.  
  294.           IF fehler=0 THEN
  295.              BEGIN
  296.                WRITELN(datei,player);
  297.                fehler:=IOResult;
  298.              END;
  299.           IF fehler=0 THEN
  300.              BEGIN
  301.                WRITELN(datei,speed);
  302.                fehler:=IOResult;
  303.              END;
  304.           IF fehler=0 THEN
  305.              BEGIN
  306.                WRITELN(datei,level);
  307.                fehler:=IOResult;
  308.              END;
  309.           IF fehler=0 THEN
  310.              BEGIN
  311.                WRITELN(datei,human);
  312.                fehler:=IOResult;
  313.              END;
  314.           IF fehler=0 THEN
  315.              BEGIN
  316.                WRITELN(datei,backcolour);
  317.                fehler:=IOResult;
  318.              END;
  319.         END;
  320.  
  321.       IF Fehler=0 THEN
  322.          BEGIN
  323.            FOR x:=0 To 19 DO
  324.              BEGIN
  325.                IF Fehler=0 THEN
  326.                   BEGIN
  327.                     WRITELN(datei,Normcolours[x].r);
  328.                     fehler:=IOResult;
  329.                   END;
  330.                IF Fehler=0 THEN
  331.                   BEGIN
  332.                     WRITELN(datei,Normcolours[x].g);
  333.                     fehler:=IOResult;
  334.                   END;
  335.                IF Fehler=0 THEN
  336.                   BEGIN
  337.                     WRITELN(datei,Normcolours[x].b);
  338.                     fehler:=IOResult;
  339.                   END;
  340.              END;
  341.  
  342.            FOR x:=1 To 4 DO
  343.              IF Fehler=0 THEN
  344.                 BEGIN
  345.                   WRITELN(datei,Backcolours[x].r);
  346.                   fehler:=IOResult;
  347.                   IF Fehler=0 THEN
  348.                      BEGIN
  349.                        WRITELN(datei,Backcolours[x].g);
  350.                        fehler:=IOResult;
  351.                        IF Fehler=0 THEN
  352.                           BEGIN
  353.                             WRITELN(datei,Backcolours[x].b);
  354.                             fehler:=IOResult;
  355.                           END;
  356.                      END;
  357.                 END;
  358.          END;
  359.  
  360.       IF Sprache=Deutsch THEN
  361.          BEGIN
  362.            IF Fehler=0 THEN Show("Konfiguration erfolgreich gespeichert.")
  363.                        ELSE Show("Fehler beim Speichern der Konfigurationsdatei aufgetreten!|Datei konnte nicht gespeichert werden!");
  364.          END
  365.         ELSE
  366.          BEGIN
  367.            IF Fehler=0 THEN Show("Configuration has been succesfully saved.")
  368.                        ELSE Show("Error while saving Configuration! File not saved!");
  369.          END;
  370.  
  371.       Close(datei);
  372.  
  373.      {$I+}
  374.  
  375.       FreeString(dateiname);
  376.     END;
  377.  
  378.   FUNCTION ReactMsg(MyMsg : IntuiMessagePtr) : BOOLEAN;
  379.  
  380.     VAR MyNummer : SHORT;
  381.         MyBool   : BOOLEAN;
  382.  
  383.     BEGIN { Weiter mit ReactMSG-Main }
  384.       MyBool:=FALSE;
  385.  
  386.       IF (MyMSG^.Class=Gadgetup_F) OR (MyMSG^.Class=GadgetDown_f) OR
  387.          (MyMSG^.Class=Rawkey_F) THEN
  388.          BEGIN
  389.            IF MyMSG^.Class=Rawkey_F THEN
  390.               BEGIN
  391.                 CASE MyMSG^.Code OF
  392.                   F1 : BEGIN
  393.                          MyNummer:=1;
  394.                          SelectGadget(sRastPort,ADR(EGad1));
  395.                        END;
  396.                   F2 : BEGIN
  397.                          MyNummer:=2;
  398.                          SelectGadget(sRastPort,ADR(EGad2));
  399.                        END;
  400.                   F3 : BEGIN
  401.                          MyNummer:=3;
  402.                          SelectGadget(sRastPort,ADR(EGad3));
  403.                        END;
  404.                   F4 : IF TBase^.Maze_Loaded THEN
  405.                           BEGIN
  406.                             MyNummer:=4;
  407.                             IF TBase^.Use_Maze THEN
  408.                                BEGIN
  409.                                  EGad4.flags:=(EGad4.flags OR SELECTED)-SELECTED;
  410.                                  DrawBorder(sRastPort,ADR(Bora1),250,125);
  411.                                END
  412.                               ELSE
  413.                                BEGIN
  414.                                  EGad4.flags:=EGad4.flags OR SELECTED;
  415.                                  DrawBorder(sRastPort,ADR(Borb1),250,125);
  416.                                END;
  417.                           END;
  418.                   F5 : IF MyModule<>NIL THEN
  419.                           BEGIN
  420.                             MyNummer:=5;
  421.                             IF TBase^.Sound THEN
  422.                                BEGIN
  423.                                  EGad5.flags:=EGad5.flags AND (NOT SELECTED);
  424.                                  DrawBorder(sRastPort,ADR(Bora1),250,150);
  425.                                END
  426.                               ELSE
  427.                                BEGIN
  428.                                  EGad5.flags:=EGad5.flags OR SELECTED;
  429.                                  DrawBorder(sRastPort,ADR(Borb1),250,150);
  430.                                END;
  431.                           END;
  432.                   F6 : BEGIN
  433.                          MyNummer:=6;
  434.                          SelectGadget(sRastPort,ADR(EGad6));
  435.                        END;
  436.                   F10 : BEGIN
  437.                          MyNummer:=7;
  438.                          SelectGadget(sRastPort,ADR(EGad7));
  439.                        END;
  440.                  ELSE;
  441.                 END;
  442.               END
  443.              ELSE MyNummer:=GetGadgetID(MyMSG^.IAddress);
  444.  
  445.            CASE MyNummer OF
  446.             1 : Edit_Names;
  447.             2 : SetControls;
  448.             3 : Load_Maze;
  449.             4 : BEGIN
  450.                   WITH TBase^ DO
  451.                       IF Maze_Loaded THEN Use_Maze:=NOT Use_Maze
  452.                                      ELSE Use_Maze:=FALSE;
  453.                 END;
  454.             5 : Switch_Sound;
  455.             6 : Save_Config;
  456.             7 : MyBool:=TRUE;
  457.            END;
  458.          END;
  459.  
  460.       ReactMSG:=MyBool;
  461.     END;
  462.  
  463.   PROCEDURE XOpen;
  464.  
  465.     CONST sNewWindow : NewWindow = (0,10,640,246,0,0,RawKey_f+GadgetDown_f+
  466.                                     Gadgetup_f,SMART_Refresh+RMBTrap+
  467.                                     BORDERLESS,NIL,NIL,NIL,NIL,NIL,
  468.                                     640,246,640,246,CUSTOMSCREEN_F);
  469.  
  470.     BEGIN
  471.       IF Sprache=Deutsch THEN
  472.          BEGIN
  473.            SetGadget(ADR(EGad7),NIL       ,ADR(Bora1),ADR(Borb1),ADR(ExInt7));
  474.            SetGadget(ADR(EGad6),ADR(EGad7),ADR(Bora1),ADR(Borb1),ADR(ExInt6));
  475.            SetGadget(ADR(EGad5),ADR(EGad6),ADR(Bora1),ADR(Borb1),ADR(ExInt5));
  476.            SetGadget(ADR(EGad4),ADR(EGad5),ADR(Bora1),ADR(Borb1),ADR(ExInt4));
  477.            SetGadget(ADR(EGad3),ADR(EGad4),ADR(Bora1),ADR(Borb1),ADR(ExInt3));
  478.            SetGadget(ADR(EGad2),ADR(EGad3),ADR(Bora1),ADR(Borb1),ADR(ExInt2));
  479.            SetGadget(ADR(EGad1),ADR(EGad2),ADR(Bora1),ADR(Borb1),ADR(ExInt1));
  480.          END
  481.         ELSE
  482.          BEGIN
  483.            SetGadget(ADR(EGad7),NIL       ,ADR(Bora1),ADR(Borb1),ADR(EInt7));
  484.            SetGadget(ADR(EGad6),ADR(EGad7),ADR(Bora1),ADR(Borb1),ADR(EInt6));
  485.            SetGadget(ADR(EGad5),ADR(EGad6),ADR(Bora1),ADR(Borb1),ADR(EInt5));
  486.            SetGadget(ADR(EGad4),ADR(EGad5),ADR(Bora1),ADR(Borb1),ADR(EInt4));
  487.            SetGadget(ADR(EGad3),ADR(EGad4),ADR(Bora1),ADR(Borb1),ADR(EInt3));
  488.            SetGadget(ADR(EGad2),ADR(EGad3),ADR(Bora1),ADR(Borb1),ADR(EInt2));
  489.            SetGadget(ADR(EGad1),ADR(EGad2),ADR(Bora1),ADR(Borb1),ADR(EInt1));
  490.          END;
  491.  
  492.       sNewWindow.Screen:=MyScreen;
  493.       sNewWindow.FirstGadget:=ADR(EGad1);
  494.  
  495.       sWindow:=NIL;
  496.       sWindow:=OpenWindow(ADR(sNewWindow));
  497.       IF sWindow=NIL THEN CleanExit(Error_No_Window);
  498.  
  499.       ViewMouse(sWindow);
  500.  
  501.       sRastPort:=ADDRESS(sWindow^.RPort);
  502.     END;
  503.  
  504.   VAR Beenden  : BOOLEAN;
  505.       sIntMSG  : IntuiMessagePtr;
  506.  
  507.   BEGIN
  508.     XOpen;
  509.  
  510.     SetAPen(sRastPort,1);
  511.     Line(sRastPort,0,0,639,0);
  512.     DrawIBox(sRastPort,0,1,639,245);
  513.     DrawIBox(sRastPort,1,1,638,245);
  514.     Draw0Box(sRastPort,2,2,637,244);
  515.     Draw0Box(sRastPort,3,3,636,243);
  516.  
  517.     beenden:=FALSE;
  518.     REPEAT
  519.       KillMSGs(sWindow^.UserPort);
  520.  
  521.       ActivateWindow(sWindow);
  522.  
  523.       IF MyModule=NIL THEN OffGadget(ADR(EGad5),sWindow,NIL)
  524.                       ELSE OnGadget (ADR(EGad5),sWindow,NIL);
  525.  
  526.       IF TBase^.Maze_Loaded THEN OnGadget (ADR(EGad4),sWindow,NIL)
  527.                             ELSE OffGadget(ADR(EGad4),sWindow,NIL);
  528.  
  529.       sIntMSG:=ADDRESS(WaitPort(sWindow^.UserPort));
  530.       sIntMSG:=ADDRESS(GetMSG  (sWindow^.UserPort));
  531.       IF sIntMSG<>NIL THEN BEGIN
  532.                              beenden:=ReactMSG(sIntMSG);
  533.                              ReplyMSG(ADDRESS(sIntMSG));
  534.                            END;
  535.     UNTIL beenden;
  536.  
  537.     ClearPointer(sWindow);
  538.     MyCloseWindow(sWindow);
  539.  
  540.     ActivateWindow(MyWindow);
  541.   END;
  542.